/*
 * @Author: LVGRAPE
 * @LastEditors: LVGRAPE
 */
#ifndef __ANO_TC_H
#define __ANO_TC_H

#include <stdint.h>
#include <stdbool.h>
void ano_tc_send_imu_data(int16_t ax, int16_t ay, int16_t az, int16_t gx, int16_t gy, int16_t gz, uint8_t shock_sta);
void ano_tc_send_compass_baro_temp_data(int16_t mag_x, int16_t mag_y, int16_t mag_z, int32_t alt_bar, int16_t tmp, uint8_t bar_sta, uint8_t mag_sta);
void ano_tc_send_flight_control_attitude_euler(int16_t rol, int16_t pit, int16_t yaw, uint8_t fusion_sta);
void ano_tc_send_flight_control_attitude_quaternion(int16_t v0, int16_t v1, int16_t v2, int16_t v3, uint8_t fusion_sta);
void ano_tc_send_height_data(uint8_t alt_sta, int32_t alt_fu, int32_t alt_add);
void ano_tc_send_flight_control_mode(uint8_t mode, uint8_t sflag, uint8_t cid, uint8_t cmd0, uint8_t cmd1);
void ano_tc_send_flight_speed_data(int16_t speed_x, int16_t speed_y, int16_t speed_z);
void ano_tc_send_position_offset_data(int32_t pos_x, int32_t pos_y);
void ano_tc_send_wind_speed_estimation(int16_t wind_x, int16_t wind_y);
void ano_tc_send_target_attitude_data(int16_t tar_rol, int16_t tar_pit, int16_t tar_yaw);
void ano_tc_send_target_speed_data(int16_t tar_speed_x, int16_t tar_speed_y, int16_t tar_speed_z);
void ano_tc_send_return_home_info(int16_t r_a, uint16_t r_d);
void ano_tc_send_voltage_current_data(uint16_t voltage, uint16_t current);
void ano_tc_send_external_module_status(uint8_t sta_g_vel, uint8_t sta_g_pos, uint8_t sta_gps, uint8_t sta_alt_add);
void ano_tc_send_rgb_brightness_info(uint8_t bri_r, uint8_t bri_g, uint8_t bri_b, uint8_t bri_a);
void ano_tc_send_log_info_string(uint8_t color, const char *str);
void ano_tc_send_log_info_string_number(int32_t val, const char *str);
void ano_tc_send_image_data(uint16_t flag, uint8_t color, uint16_t begin_row, uint16_t width, const uint8_t *pix_data, uint16_t pix_data_len);
void ano_tc_send_pwm_control(uint16_t pwm1, uint16_t pwm2, uint16_t pwm3, uint16_t pwm4, uint16_t pwm5, uint16_t pwm6, uint16_t pwm7, uint16_t pwm8);
void ano_tc_send_attitude_control(int16_t ctrl_rol, int16_t ctrl_pit, int16_t ctrl_thr, int16_t ctrl_yaw);
void ano_tc_send_gps_sensor_info1(uint8_t fix_sta, uint8_t s_num, int32_t lng, int32_t lat, int32_t alt_gps, int16_t n_spe, int16_t e_spe, int16_t d_spe, uint16_t pdop, uint16_t sacc, uint16_t vacc);
void ano_tc_send_raw_optical_flow_info(uint8_t type, int16_t dx, int16_t dy, uint8_t qua);
void ano_tc_send_general_position_sensor_data(int32_t pos_x, int32_t pos_y, int32_t pos_z);
void ano_tc_parse_general_position_sensor_data(uint8_t *rx_buffer, int32_t *pos_x, int32_t *pos_y, int32_t *pos_z);
void ano_tc_send_general_speed_sensor_data(int16_t speed_x, int16_t speed_y, int16_t speed_z);
void ano_tc_parse_general_speed_sensor_data(uint8_t *rx_buffer, int16_t *speed_x, int16_t *speed_y, int16_t *speed_z);
void ano_tc_send_general_ranging_sensor_data(uint16_t direction, uint16_t angle, uint32_t dist);
void ano_tc_parse_general_ranging_sensor_data(uint8_t *rx_buffer, uint16_t *direction, uint16_t *angle, uint32_t *dist);
void ano_tc_send_general_image_feature_point_info(uint8_t id, int16_t x, int16_t y, uint16_t angle);
void ano_tc_parse_general_image_feature_point_info(uint8_t *rx_buffer, uint8_t *id, int16_t *x, int16_t *y, uint16_t *angle);
void ano_tc_send_remote_control_data(int16_t rol, int16_t pit, int16_t thr, int16_t yaw, int16_t aux1, int16_t aux2, int16_t aux3, int16_t aux4, int16_t aux5, int16_t aux6);
void ano_tc_parse_remote_control_data(uint8_t *rx_buffer, int16_t *rol, int16_t *pit, int16_t *thr, int16_t *yaw, int16_t *aux1, int16_t *aux2, int16_t *aux3, int16_t *aux4, int16_t *aux5, int16_t *aux6);
void ano_tc_send_real_time_control(int16_t ctrl_rol, int16_t ctrl_pit, int16_t ctrl_thr, int16_t ctrl_yawdps, int16_t ctrl_spd_x, int16_t ctrl_spd_y, int16_t ctrl_spd_z);
void ano_tc_parse_real_time_control(uint8_t *rx_buffer, int16_t *ctrl_rol, int16_t *ctrl_pit, int16_t *ctrl_thr, int16_t *ctrl_yawdps, int16_t *ctrl_spd_x, int16_t *ctrl_spd_y, int16_t *ctrl_spd_z);
void ano_tc_send_anonymous_optical_flow_data(uint8_t mode, uint8_t state, int16_t dx, int16_t dy, uint8_t quality);
void ano_tc_parse_anonymous_optical_flow_data(uint8_t *rx_buffer, uint8_t *mode, uint8_t *state, int16_t *dx, int16_t *dy, uint8_t *quality);
void ano_tc_send_waypoint_read(uint8_t num);
void ano_tc_parse_waypoint_read_return(uint8_t *rx_buffer, uint8_t *num, int32_t *lng, int32_t *lat, int32_t *alt,
                                       uint16_t *spd, uint16_t *yaw, uint8_t *fun, uint8_t *cmd1, uint8_t *cmd2,
                                       uint8_t *cmd3, uint8_t *cmd4);
void ano_tc_send_waypoint_write(uint8_t num, int32_t lng, int32_t lat, int32_t alt, uint16_t spd, uint16_t yaw,
                                uint8_t fun, uint8_t cmd1, uint8_t cmd2, uint8_t cmd3, uint8_t cmd4);
void ano_tc_send_function_trigger_command(uint8_t cid, uint8_t cmd0, uint8_t cmd1, uint8_t cmd2, uint8_t cmd3,
                                          uint8_t cmd4, uint8_t cmd5, uint8_t cmd6, uint8_t cmd7, uint8_t cmd8,
                                          uint8_t cmd9);

#endif
